package com.yuri.news.service.impl;

import java.util.List;
import java.util.Optional;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.yuri.news.entity.Menu;
import com.yuri.news.jpa.MenuRepository;
import com.yuri.news.service.MenuService;

@Service
public class MenuServiceImpl implements MenuService {
	// 依赖注入
	@Autowired
	MenuRepository menuRepository;
	@Override
	public Menu saveMenu(Menu menu) {
		String key = UUID.randomUUID().toString().replaceAll("-", "");
		menu.setMenuNo(key);
		return menuRepository.save(menu);
	}

	@Override
	public Boolean deleteMenu(Menu menu) {
		Boolean flag = false;
		// 根据id查询看是否存在
		Optional<Menu> optional = menuRepository.findById(menu.getId());
		// 如果存在 则删除
		if(optional.isPresent()) {
			menuRepository.delete(menu);
			flag = true;
		}
		
		return flag;
	}

	@Override
	public Boolean deleteMenuById(Long id) {
		Boolean flag = false;
		// 根据id查询菜单
		Optional<Menu> optional = menuRepository.findById(id);
		// 如果存在则删除
		if(optional.isPresent()) {
			menuRepository.deleteById(id);
			flag = true;
		}
		
		return flag;
	}

	@Override
	public List<Menu> listMenuAll() {
		return menuRepository.findAll();
	}

	@Override
	public Menu getMenu(Long id) {
		Menu menu = null;
		
		Optional<Menu> optional = menuRepository.findById(id);
		if(optional.isPresent()) {
			menu = optional.get();
		}
		
		return menu;
	}

	@Override
	public Boolean updateMenu(Menu menu) {
		Boolean flag = false;
		
		Optional<Menu> optional = menuRepository.findById(menu.getId());
		if(optional.isPresent()) {
			// 判断其选择的上级菜单是否为他自己
			if(menu.getUpMenu() != null && menu.getUpMenu().getId().equals(menu.getId())) {
				menu.setUpMenu(optional.get().getUpMenu());
			}
			menuRepository.save(menu);
			flag = true;
		}
		
		return flag;
	}

}
